package practice;

import java.io.*;
import java.util.Locale;
import java.util.Scanner;

// 复制文件
public class CopyFile {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要复制的源文件路径：");
        String srcPath = scanner.next();
        File srcFile = new File(srcPath);
        if (!srcFile.exists() || !srcFile.isFile()){
            // 如果当前路径文件不存在或者不是普通文件，那就不复制，直接返回。
            System.out.println("源文件不存在或者不是普通文件，退出！");
            return;
        }

        System.out.println("请输入你要复制到的目标文件路径：");
        String destPath = scanner.next();
        File destFile = new File(destPath);
        if (destFile.exists()){
            if (destFile.isDirectory()){
                System.out.println("目标文件已存在且是目录，退出！");
            }else {
                System.out.println("目标普通文件已经存在，是否要覆写？ y or Y(任意键取消)：");
                String choice = scanner.next();
                if (!choice.toUpperCase().equals("Y")){
                    System.out.println("停止复制，退出！");
                }
            }
        }

        // 走到这里代表源文件是一个普通文件，且目标文件不存在或者是一个将要覆写的普通文件
        //                              如果不存在就创建文件再写，如果存在就直接覆写
        try(InputStream inputStream = new FileInputStream(srcPath);
            OutputStream outputStream = new FileOutputStream(destPath)) {
            while (true){
                byte[] buffer = new byte[1024];
                int len = inputStream.read(buffer);
                if(len == -1){
                    break;
                }
                outputStream.write(buffer);
                outputStream.flush();
            }
            System.out.println("复制成功！");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
